using System;
using UnityEngine;
using ItemStatsSystem;
using Duckov.Utilities;

namespace CustomItemLib
{
    // 自定义物品数据，可直接用也可做基类
    // 包含所有 ItemSettableProperty 作为可选参数
    [Serializable]
    public class CustomItemData
    {
        // ==================== 必需属性 ====================
        
        // 模板物品(Prefab物品的)类型ID(必需)
        public int TemplateTypeID;

        // 物品类型ID(必需)
        public int NewTypeID;

        // 显示名称(可选，对应 ItemSettableProperty.DisplayNameRaw)
        public string DisplayName = string.Empty;

        // 物品描述(只读属性，通过 DisplayNameRaw + "_Desc" 生成)
        public string Description = string.Empty;

        // ==================== ItemSettableProperty 对应的可选属性 ====================

        // 覆盖标签(可选，对应 ItemSettableProperty.Tags)
        public Tag[]? OverrideTags;

        // 额外添加的标签(可选，对应 ItemSettableProperty.Tags)
        public Tag[]? ExtraTags;

        // ==================== 展示 ====================

        // 图标(可选，对应 ItemSettableProperty.Icon)
        public Sprite? Icon;

        // 排序值(可选，对应 ItemSettableProperty.Order)
        public int? Order;

        // ==================== 堆叠 ====================

        // 最大堆叠数量(可选，对应 ItemSettableProperty.MaxStackCount)
        public int? MaxStackCount;

        // 堆叠数量(可选，对应 ItemSettableProperty.StackCount)
        public int? StackCount;

        // 物品重量(可选，对应 ItemSettableProperty.weight)
        public float? Weight;

        // ==================== 价值 ====================

        // 价格(可选，对应 ItemSettableProperty.Value)
        public int? Price;

        // 品质等级(可选，对应 ItemSettableProperty.Quality)
        public int? Quality;

        // 显示品质(可选，对应 ItemSettableProperty.DisplayQuality)
        public DisplayQuality? DisplayQuality;

        // ==================== 耐久度 ====================

        // 最大耐久度(可选，对应 ItemSettableProperty.MaxDurability)
        public float? MaxDurability;

        // 耐久度损失(可选，对应 ItemSettableProperty.DurabilityLoss)
        public float? DurabilityLoss;

        // 当前耐久度(可选，对应 ItemSettableProperty.Durability)
        public float? Durability;

        // // ==================== 检查 ====================

        // // 是否已检查(可选，对应 ItemSettableProperty.Inspected)
        // public bool? Inspected;

        // // 是否正在检查(可选，对应 ItemSettableProperty.Inspecting)
        // public bool? Inspecting;
    }
}